package cn.xianyang.controller;

import cn.xianyang.domain.User;
import cn.xianyang.feignclient.MovieFeignClient;
import cn.xianyang.server.IUserServer;
import cn.xianyang.utils.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private IUserServer userServer;
    @Autowired
    private MovieFeignClient movieFeignClient;

    @GetMapping
    public AjaxResult findAll(){
        return movieFeignClient.findAll();
    }

    @PostMapping("/buyTickets")
    //购买票接口 需要用户ID 和电影票ID 以及购买张数 使用map 原因为不想写DTo
    public AjaxResult buyTickets(@RequestBody Map map){
        Long number =Long.parseLong(map.get("number").toString());
        Long id =Long.parseLong(map.get("id").toString());
        Long Uid =Long.parseLong(map.get("Uid").toString());
        //调用movie接口 判断余票是否够
        AjaxResult result = movieFeignClient.buyTickets(map);
        //如果不够直接返回
        if(result.isSuccess()==false){
            return result;
        }else {
            //如果余票够 则进入购票流程
            return  userServer.buyTickets(number, id, Uid);
        }
    }

    @PostMapping("watch/{id}/{uid}")
    //观看电影接口 所需参数为购票人 以及观看的电影
    public AjaxResult watch(@PathVariable("id")Long id, @PathVariable("uid")Long uid){
        //调用movie观看接口 判断是否在在上映期间
        AjaxResult result = movieFeignClient.watch(id);
        //如果不是则直接返回
        if (result.isSuccess()==false){
            return result;
        }else {
            //如果是则进入观影流程
            return userServer.watch(uid,id);
        }
    }
    @PostMapping("/register")
    //注册流程
    public AjaxResult register(@RequestBody User user){
        //添加用户
        userServer.add(user);
        //赠送电影票 这里还没完善 不想写了
        userServer.giveTickets(user);
        return new AjaxResult();
    }


}
